package com.foreknow.demo03;

import java.util.Scanner;

/*
* 模拟简单的ATM机存取款程序
* 功能：1.登录页面输出(输出)   2.登录    3.菜单：    3.1查询  3.2存款   3.3取款   3.4修改密码 3.5退出程序
*
* */
public class BankSystem {
    //定义登录界面的输出
    public static void welcome(){
        System.out.println("***************欢迎登陆银行系统********************");
        System.out.println("***********************Version1.0***************");
    }

    /**
     * 2.登录
     * @param user 用户名
     * @param pwd  密码
     * @return     boolean
     */
    public static boolean login(String user,String pwd){
        Scanner  input = new Scanner(System.in);
        for (int i= 3;i>0;i--){
            System.out.println("请输入账号：");
            String new_user = input.next();
            System.out.println("请输入密码：");
            String new_pwd = input.next();
            if (user.equals(new_user)&&pwd.equals(new_pwd)){
                //登录成功
                System.out.println("登录成功........");
                return true;
            }else{
                if (i-1==0){
                    System.out.println("您输入的密码3次错误.....");
                    //退出系统
                    System.exit(0);
                }
                System.out.println("用户名或密码错误，请重新输入，今日还有" + (i-1) + "次机会");
            }
        }
        return false;
    }

    /*
    * 判断是否继续操作（y/n）
    * */
    public static void decide(){
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续(y/n):");
        String dec = input.next();
        if (dec.equals("y")){
            return;
        }else if (dec.equals("n")){
            System.out.println("退出成功......");
            System.exit(0);
        }else{
            while(true){
                System.out.println("输入错误，请重新输入(y/n):");
                String temp = input.next();
                if (temp.equals("y")){
                    return;
                }else if (temp.equals("n")){
                    System.out.println("退出成功......");
                    System.exit(0);
                }
            }
        }
    }

    /**
     * 查询余额
     * @param money
     */
    public static void checkMoney(double money){
        System.out.println("您的余额为" + money);
    }

    /**
     * 存款
     * @param money 余额
     * @return      double
     */
    public static double setMoney(double money){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入存款的金额：");
        double addMoney = input.nextInt();
        if (addMoney>10000){
            System.out.println("单次取款的金额超过1万元");
            return 0;
        }else if (addMoney<0){
            System.out.println("存款的金额错误");
            return 0;
        }else if (addMoney%100!=0){
            System.out.println("请输入100的整数倍存款");
            return 0;
        }else{
            System.out.println("存款成功，当前的余额为" + (money + addMoney));
            return addMoney;
        }
    }

    /**
     * 取款
     * @param money
     * @return
     */
    public static double getMoney(double money){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入取款的金额：");
        double setMoney = input.nextInt();
        if (setMoney>money){
            System.out.println("余额不足");
            return 0;
        }else if (setMoney>3000){
            System.out.println("单次的取款金额超过3000");
            return 0;
        }else if (setMoney<0){
            System.out.println("取款金额错误");
            return 0;
        }else if (setMoney%100!=0){
            System.out.println("请去除100的整数倍存款");
            return 0;
        }else{
            System.out.println("取款成功，当前的余额为" + (money - setMoney));
            return setMoney;
        }
    }

    /**
     * 修改密码
     * @param pwd
     * @return    修改成功返回新的密码，失败的话返回旧密码
     */
    public static String changePwd(String pwd){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入旧密码：");
        String jiu_pwd = input.next();
        if (jiu_pwd.equals(pwd)){
            System.out.println("请输入新密码：");
            String new_pwd = input.next();
            System.out.println("请再次输入新密码：");
            String new_pwd1 = input.next();
            if(new_pwd.equals(new_pwd1)){
                System.out.println("密码修改成功....");
                return new_pwd;
            }else{
                System.out.println("两次密码输入的不一致，请重新输入");
                return pwd;
            }
        }else{
            System.out.println("旧密码输入错误");
        }
        return pwd;
    }
    public static void main(String[] args) {
        //初始化一个账户的信息，因为没有数据库
        String user = "dd";//用户名
        String pwd= "123";//密码
        double money = 10000;//余额
        Scanner input = new Scanner(System.in);
        //登录的界面
        welcome();
        //用户一定要先登录才能对系统进行操作
        //调用登录的方法login
        boolean b = login(user,pwd);
        //如果登录成功，就可以进入到操作的界面
        while(b==true){
            while(true){
                System.out.println("1.查询    2.存款    3.取款    4.修改密码  5.退出系统");
                int opration = input.nextInt();
                switch(opration){
                    case 1:
                        //查询余额
                        checkMoney(money);
                        //询问用户是否继续
                        decide();
                        break;
                    case 2:
                        //存款
                        money += setMoney(money);
                        decide();
                        break;
                    case 3:
                        //取款
                        money -= getMoney(money);
                        decide();
                        break;
                    case 4:
                        //修改密码,因为还没有数据库，所以直接打印当前的密码来查看是否成功
                        String str = changePwd(pwd);
                        System.out.println("当前的密码为" + str);
                        decide();
                        break;
                    case 5:
                        //退出系统
                        System.out.println("系统退出成功,欢迎下次使用......");
                        System.exit(0);
                        break;
                    default:
                        System.out.println("非法操作");
                        break;
                }
            }
        }

    }
}
